home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ham Radio
/
Ham Radio CD-ROM (Emerald Software) (1995).ISO
/
ant
/
antenna2
/
rectplan.bas
< prev
next >
Wrap
BASIC Source File
|
1986-09-08
|
5KB
|
136 lines
10 SCREEN 2,0:CLS:KEY OFF
20 ' JUNE 6, 1986
30 T$="ARRAY FACTOR OF PLANAR RECTANGULAR ARRAY":LC=1:GOSUB 1350
40 ' AHMAD FAIZAL MOHD ZAIN
50 PRINT:PRINT:PRINT:PRINT
60 DEF FN LOGTEN(X)=LOG(X)/LOG(10)
70 DIM AF(370),Y(400)
80 PI=3.141592
90 DEF FN FX(PSIX)=(SIN(M*PSIX/2)/SIN(PSIX/2))/M
100 DEF FN GX(PSIX)=COS(M*PSIX/2)/COS(PSIX/2)
110 DEF FN FY(PSIY)=(SIN(N*PSIY/2)/SIN(PSIY/2))/N
120 DEF FN GY(PSIY)=COS(N*PSIY/2)/COS(PSIY/2)
130 PRINT" DO YOU WANT TO GIVE ":PRINT
140 PRINT" 1)MAIN BEAM DIRECTION"
150 PRINT"OR 2)PHASE SHIFTS"
160 LOCATE 13,1:INPUT AN
170 IF AN<1 OR AN>2 THEN PRINT"TYPE 1 OR 2":GOTO 160
180 ON AN GOTO 190,220
190 INPUT"DIRECTION IN THETA (deg) ";THE0
200 INPUT"DIRECTION IN PHI (deg) ";PHI0
210 GOTO 240
220 INPUT "PHASE SHIFT (IN X) deg ";ALPX
230 INPUT "PHASE SHIFT (IN Y) deg ";ALPY
240 INPUT "# OF ELEMENTS (IN X)";M
250 INPUT "# OF ELEMENTS (IN Y)";N
260 INPUT "SEPERATION (IN X) lambda ";DX
270 INPUT "SEPERATION (IN Y) lambda ";DY
280 '
290 ON AN GOTO 300,360
300 TH=THE0*PI/180:PH=PHI0*PI/180
310 ALPRX=-2*PI*DX*SIN(TH)*COS(PH)
320 ALPRY=-2*PI*DY*SIN(TH)*SIN(PH)
330 ALPX=ALPRX*180/PI
340 ALPY=ALPRY*180/PI
350 GOTO 490
360 ALPRX=ALPX*PI/180
370 ALPRY=ALPY*PI/180
380 BYDX=ALPRY*DX:BXDY=ALPRX*DY
390 IF BXDY>0 THEN PHI0=(180/PI)*ATN(BYDX/BXDY)
400 IF BXDY<0 THEN PHI0=180*SGN(BYDX)+(180/PI)*ATN(BYDX/BXDY)
410 IF BXDY=0 THEN PHI0=90*SGN(BYDX)
420 IF BYDX=0 AND BXDY<0 THEN PHI0=180
430 XX=ALPRX/(2*PI*DX):YY=ALPRY/(2*PI*DY)
440 ZZ=SQR(XX*XX+YY*YY)
450 IF ZZ=-1 THEN THE0=-90
460 IF ZZ=1 THEN THE0=90
470 IF ZZ<>-1 OR ZZ<>1 THEN THE0=ATN(ZZ/(SQR(1-ZZ*ZZ)))
480 THE0=THE0*180/PI
490 PSIX0=ALPRX+2*PI*DX*SIN(0)*COS(0)
500 YMAX=0:YMIN=0
510 P=0 'xz-plane
520 GOSUB 630:GOSUB 800
530 LOCATE 22,10:PRINT"Antenna pattern in xz-plane (PHI=0)"
540 LOCATE 23,1:PRINT"I'm doing yz-plane calculation. Please wait...";
550 P=90 'yz-plane
560 YMIN=0:YMAX=0
570 GOSUB 630
580 LOCATE 23,1:PRINT"Type return to continue... ";:INPUT W
590 GOSUB 800
600 LOCATE 22,10:PRINT"Antenna pattern in yz-plane (PHI=90)"
610 GOSUB 1290
620 END
630 FOR THE=0 TO 360
640 ' LOCATE 15,19:PRINT 180-THE
650 TH=THE*PI/180
660 PHI=P*PI/180
670 PSIX=ALPRX+2*PI*DX*SIN(TH)*COS(PHI)
680 PSIY=ALPRY+2*PI*DY*SIN(TH)*SIN(PHI)
690 IF SIN(PSIX/2)=0 AND SIN(PSIY/2)=0 THEN AF(THE)=1
700 IF SIN(PSIX/2)=0 AND SIN(PSIY)<>0 THEN AF(THE)=FN FY(PSIY)
710 IF SIN(PSIY/2)=0 AND SIN (PSIX)<>0 THEN AF(THE)=FN FX(PSIX)
720 IF SIN(PSIX/2)<>0 AND SIN(PSIY/2)<>0 THEN AF(THE)=FN FX(PSIX)*FN FY(PSIY)
730 Y(THE)=ABS(AF(THE))
740 Y(THE)=20*FN LOGTEN(Y(THE))
750 IF Y(THE)<YMIN THEN YMIN= Y(THE)
760 IF Y(THE)>YMAX THEN YMAX=Y(THE)
770 NEXT THE
780 YMAX=YMAX-YMIN
790 RETURN
800 SCREEN 2,0:CLS
810 VIEW (10,2)-(400,164),,1
820 WINDOW (-YMAX,-YMAX)-(YMAX,YMAX)
830 CLS
840 '
850 CIRCLE (0,0),YMAX,1
860 CIRCLE (0,0),.75*YMAX,1
870 CIRCLE (0,0),.5*YMAX,1
880 CIRCLE (0,0),.25*YMAX,1
890 '
900 LINE (-YMAX,0)-(YMAX,0),1
910 LINE (0,YMAX)-(0,-YMAX),1
920 LINE (-.707*YMAX,.707*YMAX)-(.707*YMAX,-.707*YMAX),1
930 LINE (-.707*YMAX,-.707*YMAX)-(.707*YMAX,.707*YMAX),1
940 '
950 PSET (0,Y(0))
960 FOR TH=0 TO 360
970 XX=TH*PI/180
980 Y(TH)=Y(TH)-YMIN
990 Y=Y(TH)*COS(XX)
1000 X=Y(TH)*SIN(XX)
1010 LINE -(X,Y),2
1020 NEXT TH
1030 LOCATE 1,53:PRINT" RECTANGULAR ARRAY"
1040 LOCATE 2,53:PRINT USING "SPACING IN X = ##.###";DX
1050 LOCATE 3,53:PRINT USING "SPACING IN Y = ##.###";DY
1060 LOCATE 5,53:PRINT USING "No. OF ELEMENTS IN X = ###";M
1070 LOCATE 6,53:PRINT USING "No. OF ELEMENTS IN Y = ###";N
1080 LOCATE 8,53:PRINT" PROGRESSIVE (deg)"
1090 LOCATE 9,53:PRINT USING "PHASE SHIFT IN X = ###.##";ALPX
1100 LOCATE 10,53:PRINT USING "PHASE SHIFT IN Y = ###.##";ALPY
1110 LOCATE 12,53:PRINT" MAIN BEAM (deg)"
1120 LOCATE 13,53:PRINT USING "IN THETA = ###.##";THE0
1130 LOCATE 14,53:PRINT USING "IN PHI = ###.##";PHI0
1140 LOCATE 16,53:PRINT USING "dB scale = ###.##";YMAX*.25;:PRINT" dB/div"
1150 LOCATE 20,25:PRINT"180":LOCATE 2,26:PRINT"0"
1160 LOCATE 17,53:PRINT"0 dB on largest circle"
1170 RETURN
1180 T$="DO YOU WANT TO RUN AGAIN (Y/N)?":LC=25:GOSUB 1240
1190 AN$=INKEY$
1200 IF AN$="Y" OR AN$="y" THEN RUN
1210 IF AN$="N" OR AN$="n" THEN END
1220 GOTO 1180
1230 :
1240 LOCATE LC,(40-LEN(T$))/2+1:PRINT T$;:RETURN 'SUBROUTINE TO CENTRE TEXT
1250 END
1260 LOCATE 24,1:PRINT"TYPE <RETURN> TO CONTINUE...";:INPUT W:SCREEN 0,0
1270 PRINT"I'M D OME CALCULATION. PLEASE WAIT..."
1280 RETURN
1290 T$=" DO YOU WANT TO RUN THIS PROGRAM AGAIN (Y/N)? ":LC=23:GOSUB 1350
1300 AN$=INKEY$
1310 IF AN$="Y" OR AN$="y" THEN RUN
1320 IF AN$="N" OR AN$="n" THEN END
1330 GOTO 1290
1340 :
1350 LOCATE LC,1:PRINT T$:RETURN